package cn.iocoder.yudao.module.design.service.relatived;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.design.controller.admin.relatived.vo.*;
import cn.iocoder.yudao.module.design.dal.dataobject.relatived.RelativedDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 关联人 Service 接口
 *
 * @author 芋道源码
 */
public interface RelativedService {

    /**
     * 创建关联人
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRelatived(@Valid RelativedCreateReqVO createReqVO);

    /**
     * 更新关联人
     *
     * @param updateReqVO 更新信息
     */
    void updateRelatived(@Valid RelativedUpdateReqVO updateReqVO);

    /**
     * 删除关联人
     *
     * @param id 编号
     */
    void deleteRelatived(Long id);

    /**
     * 获得关联人
     *
     * @param id 编号
     * @return 关联人
     */
    RelativedDO getRelatived(Long id);

    /**
     * 获得关联人列表
     *
     * @param ids 编号
     * @return 关联人列表
     */
    List<RelativedDO> getRelativedList(Collection<Long> ids);

    /**
     * 获得关联人分页
     *
     * @param pageReqVO 分页查询
     * @return 关联人分页
     */
    PageResult<RelativedDO> getRelativedPage(RelativedPageReqVO pageReqVO);

    /**
     * 获得关联人列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 关联人列表
     */
    List<RelativedDO> getRelativedList(RelativedExportReqVO exportReqVO);

     List<Map> getFriendList();


    List<Map<String, Object>> getSimFriendList();
    /**
     * 查询设计师名下关联人
     * @param vo
     * @return
     */
    List<Map>  getRelativedRelList(RelativedBaseVO vo);


    /**
     * 查询设计师名下关联供应商
     * @param vo
     * @return
     */
    List<RelativedSupplierVO>  getRelativedRelSupplierList(RelativedBaseVO vo);

    /**
     * 查询userId 好友
     * @param[1] userId
     * @param[2] statusCd
     * @return List<RelativedDO>
     */
    List<RelativedDO> getRelativedList(Long userId,String statusCd );


}
